/*
 * @Descripttion: 
 * @Author: ziwei
 * @Date: 2022-07-05 10:07:34
 * @LastEditors: ziwei
 * @LastEditTime: 2022-07-05 10:32:00
 */
type Func<T extends any[],R> = (...a:T)=>R
console.log(compose()('zhufeng'));
//0
export default function compose():<R>(a:R) =>R;
//1
export default function compose<F extends Function>(f:F):F;
//2
export default function compose<A,T extends any[],R>(
    f1:(a:A)=>R,
    f2:Func<T,A>
):Func<T,R> 
//3
export default function compose<A,B,T extends any[],R>(
    f1:(b:B)=> R,
    f2:(a:A) =>B,
    f3:Func<T,A>
):Func<T,R>
//4
export default function compose<A,B,C,T extends any[],R>()

